home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Archives / HardwareProjects / VideoText.lha / VideoText4.2 / source / info.p < prev    next >
Encoding:
Text File  |  1995-06-27  |  12.1 KB  |  297 lines

  1. UNIT info; {$project vt }
  2. { Generierung von Sonderseiten zum Programm VideoText }
  3.  
  4. INTERFACE; FROM vt USES jobs;
  5.  
  6. PROCEDURE topinfo(top0,top1: p_onepage);
  7. PROCEDURE say_hello(version: Str80);
  8. PROCEDURE paraminfo;
  9. PROCEDURE create_help;
  10.  
  11. { ---------------------------------------------------------------------- }
  12.  
  13. IMPLEMENTATION;
  14.  
  15. {$opt q,s+,i+ } { keine Laufzeitprüfungen außer Stack und Feldindizes }
  16.  
  17. PROCEDURE write_to_page(x,y: Integer; txt: Str80; vgf,hgf: Integer;
  18.                        seite: p_onepage);
  19. { Text in eine Videotextseite schreiben. }
  20. { x und y werden ab 0 gezählt. Umlaute werden konvertiert. Wenn vgf oder }
  21. { hgf -1 sind, werden keine Farbsteuerzeichen erzeugt -> Platzersparnis. }
  22. VAR i,j: Integer;
  23. BEGIN
  24.   i := x + 40*y;
  25.   IF hgf=0 THEN BEGIN
  26.     seite^.chars[i] := 28; Inc(i);
  27.   END;
  28.   IF hgf>0 THEN BEGIN
  29.     seite^.chars[i] := hgf; Inc(i);
  30.     seite^.chars[i] := 29; Inc(i);
  31.   END;
  32.   IF vgf>=0 THEN BEGIN
  33.     seite^.chars[i] := vgf; Inc(i);
  34.   END;
  35.   FOR j := 1 TO Length(txt) DO BEGIN
  36.     CASE txt[j] OF
  37.       'ä': seite^.chars[i] := Ord('{');
  38.       'ö': seite^.chars[i] := Ord('|');
  39.       'ü': seite^.chars[i] := Ord('}');
  40.       'ß': seite^.chars[i] := Ord('~');
  41.       'Ä': seite^.chars[i] := Ord('[');
  42.       'Ö': seite^.chars[i] := Ord('\');
  43.       'Ü': seite^.chars[i] := Ord(']');
  44.       OTHERWISE seite^.chars[i] := Ord(txt[j]);
  45.     END;
  46.     Inc(i);
  47.   END;
  48. END;
  49.  
  50. PROCEDURE char_to_page(x,y: Integer; c: Char; seite: p_onepage);
  51. BEGIN
  52.   seite^.chars[x+40*y] := Ord(c);
  53. END;
  54.  
  55. PROCEDURE init_page(seite: p_onepage);
  56. { gerade mit New() erzeugte Seite zum Selbstbeschreiben vorbereiten. }
  57. { Nur pg und sp müssen bereits eingetragen sein. }
  58. VAR i: Integer;
  59.     s: Str80;
  60. BEGIN
  61.   FOR i := 0 TO 959 DO seite^.chars[i] := 32;
  62.   seite^.cbits := $4A00; { wichtig: deutscher Zeichensatz! }
  63.   s := '('+hexstr(seite^.sp,4)+') '+hexstr(seite^.pg,3);
  64.   write_to_page(0,0,s,7,-1,seite);
  65.   write_to_page(16,0,'lokal erzeugte VT-Seite',5,-1,seite);
  66. END;
  67.  
  68. PROCEDURE topinfo{(top0,top1: p_onepage)};
  69. { wertet die TOPtext-Seiten 1F0 und 1F1 aus, erzeugt zwei Seiten Information }
  70. { bzw., sofern schon vorhanden, aktualisiert diese nur. }
  71. VAR i,j,k,n: Integer;
  72.     npg,nsp,nlrg: Integer;
  73.     pg1,pg2: p_onepage;
  74.     s: Str80;
  75. BEGIN
  76.   pg1 := hunt_in_list($998,1,True);
  77.   pg2 := hunt_in_list($998,2,True);
  78.   IF pg1=Nil THEN BEGIN
  79.     New(pg1); pg1^.pg := $998; pg1^.sp := 1;
  80.     ins_to_list(pg1); update_list(pg1,1);
  81.   END;
  82.   IF pg2=Nil THEN BEGIN
  83.     New(pg2); pg2^.pg := $998; pg2^.sp := 2;
  84.     ins_to_list(pg2); update_list(pg2,1);
  85.   END;
  86.   init_page(pg1);
  87.   init_page(pg2);
  88.   npg := 0; nsp := 0; nlrg := 0;
  89.   write_to_page(0,1,'Seitenbelegung (laut TOP-Text)  1/2',3,4,pg1);
  90.   write_to_page(0,1,'Seitenbelegung (laut TOP-Text)  2/2',3,4,pg2);
  91.   FOR i := 10 TO 89 DO BEGIN
  92.     s := IntStr(10*i)+': ----------';
  93.     j := 10*i-60;
  94.     FOR k := 0 TO 9 DO
  95.       IF NOT (topcode[top0^.chars[j+k]] IN [0,16]) THEN BEGIN
  96.         Inc(npg); n := topcode[top1^.chars[j+k]]
  97.         CASE n OF
  98.           0: BEGIN s[k+6] := #127; Inc(nsp); END;
  99.           1..9: BEGIN s[k+6] := Chr(48+n); nsp := nsp + n; END;
  100.           10: BEGIN s[k+6] := '+'; Inc(nlrg); nsp := nsp + n; END;
  101.           OTHERWISE s[k+6] := '?'; Dec(npg); { :-( }
  102.         END;
  103.       END ELSE IF topcode[top0^.chars[j+k]]=16 THEN
  104.         s[k+6] := '?';
  105.     IF Odd(i DIV 10) THEN j := 2 ELSE j := 21;
  106.     IF Odd((i+10) DIV 20) THEN k := i MOD 10+2 ELSE k := i MOD 10+13;
  107.     IF i<50 THEN BEGIN
  108.       write_to_page(j,k,s,7,-1,pg1); char_to_page(j+5,k,#6,pg1);
  109.     END ELSE BEGIN
  110.       write_to_page(j,k,s,7,-1,pg2); char_to_page(j+5,k,#6,pg2);
  111.     END;
  112.   END;
  113.   s := IntStr(npg)+' Seitennummern';
  114.   write_to_page(0,12,s,7,5,pg1);
  115.   s := ''; IF nlrg>0 THEN
  116.     s := IntStr(nlrg)+' mit "mehr als 9" Unterseiten';
  117.   write_to_page(0,23,s,3,1,pg1);
  118.   s := IntStr(nsp)+' kByte Text';
  119.   IF nlrg>0 THEN s := 'mind. ' + s;
  120.   write_to_page(0,12,s,7,5,pg2);
  121.   j := 0;
  122.   FOR i := 100 TO 899 DO
  123.     IF topcode[top0^.chars[i-60]]=1 THEN j := i;
  124.   s := 'zur Zeit keine Untertitel';
  125.   IF j>0 THEN s := 'VT-Untertitel auf Seite '+IntStr(j);
  126.   write_to_page(0,23,s,3,1,pg2);
  127.   IF (thispage=pg1) OR (thispage=pg2) THEN
  128.     writepage(thispage,True);
  129. END;
  130.  
  131. PROCEDURE say_hello{(version: Str80)};
  132. VAR seite: p_onepage;
  133.     i: Integer;
  134. BEGIN
  135.   seite := hunt_in_list($996,0,True);
  136.   IF seite=Nil THEN BEGIN
  137.     New(seite); seite^.pg := $996; seite^.sp := 0;
  138.     ins_to_list(seite); { kein update_list(), da redraw_all noch folgt }
  139.   END;
  140.   init_page(seite);
  141.   i := 1;
  142.   write_to_page(0,i,#13,3,4,seite);
  143.   write_to_page(13,i,Copy(version,7,14),-1,-1,seite); Inc(i);
  144.   Inc(i);
  145.   write_to_page(0,i,'  Teletext-Software für den Amiga',4,6,seite); Inc(i);
  146.   Inc(i);
  147.   write_to_page(0,i,'     Programmautor (1992-95):',7,5,seite); Inc(i);
  148.   write_to_page(0,i,'            Wilhelm Nöker',6,-1,seite); Inc(i);
  149.   write_to_page(0,i,'    Hertastr. 8, D-44388 Dortmund',6,-1,seite); Inc(i);
  150.   Inc(i);
  151.   write_to_page(0,i,'             Compiler:',7,5,seite); Inc(i);
  152.   write_to_page(0,i,'  KICK-Pascal 2.12 von MAXON Computer',6,-1,seite); Inc(i);
  153.   Inc(i);
  154.   write_to_page(0,i,  '        benötigte Hardware:',7,5,seite); Inc(i);
  155.   write_to_page(0,i,'  entspricht dem c''t-Projekt aus der',6,-1,seite); Inc(i);
  156.   write_to_page(0,i,'             Ausgabe 7/92',6,-1,seite); Inc(i);
  157.   Inc(i);
  158.   write_to_page(0,i,#13'            FREEWARE',3,4,seite); Inc(i);
  159.   Inc(i);
  160.   write_to_page(0,i,'   "Spread the word & the disk!"',4,6,seite); Inc(i);
  161.   Inc(i);
  162.   write_to_page(0,i,#24'           Grüße an MiHü ;-)',5,-1,seite); Inc(i);
  163. END;
  164.  
  165. PROCEDURE paraminfo;
  166. { gibt die eingestellten Startparameter aus }
  167. VAR seite: p_onepage;
  168.     i,j: Integer;
  169.     s: Str80;
  170. BEGIN
  171.   seite := hunt_in_list($997,0,True);
  172.   IF seite=Nil THEN BEGIN
  173.     New(seite); seite^.pg := $997; seite^.sp := 0;
  174.     ins_to_list(seite); { kein update_list(), da redraw_all noch folgt }
  175.   END;
  176.   init_page(seite);
  177.   i := 1;
  178.   write_to_page(0,i,#13'   Ihre Programmstartparameter'#12,3,4,seite); Inc(i);
  179.   Inc(i);
  180.   write_to_page(0,i,'bzw. was Sie hätten angeben können',4,6,seite); Inc(i);
  181.   Inc(i);
  182.   write_to_page(0,i,' Icon-ToolTypes',6,-1,seite);
  183.   write_to_page(25,i,'CLI-Parameter',5,-1,seite); Inc(i)
  184.   write_to_page(0,i,'max. Zeit für Seitensuche (sek):',7,5,seite); Inc(i);
  185.   write_to_page(0,i,' MAXWAIT='+IntStr(maxwait),6,-1,seite);
  186.   write_to_page(25,i,'-w'+IntStr(maxwait),5,-1,seite); Inc(i);
  187.   write_to_page(0,i,'Auffüllen einer Seite (50stel sek):',7,5,seite); Inc(i);
  188.   write_to_page(0,i,'   BURST='+IntStr(burst),6,-1,seite);
  189.   write_to_page(25,i,'-b'+IntStr(burst),5,-1,seite); Inc(i);
  190.   write_to_page(0,i,' SHUFFLE='+IntStr(shuffle),6,-1,seite);
  191.   write_to_page(25,i,'-s'+IntStr(shuffle),5,-1,seite); Inc(i);
  192.   write_to_page(0,i,'Zeitschleife (für schnelle Amigas):',7,5,seite); Inc(i);
  193.   write_to_page(0,i,' BUSDELAY='+IntStr(busdelay),6,-1,seite);
  194.   write_to_page(25,i,'-d'+IntStr(busdelay),5,-1,seite); Inc(i);
  195.   write_to_page(0,i,'Bildschirmfarben:',7,5,seite); Inc(i);
  196.   s := ''; FOR j := 0 TO 7 DO s := s + hexstr(palette[j],3)+',';
  197.   write_to_page(0,i,' PALETTE=',6,-1,seite);
  198.   write_to_page(25,i,'-p',5,-1,seite); Inc(i);
  199.   write_to_page(4,i,Copy(s,1,31),6,-1,seite); Inc(i);
  200.   write_to_page(0,i,'Ausgabedatei:',7,5,seite); Inc(i);
  201.   write_to_page(0,i,'     FILE='+outputname,6,-1,seite);
  202.   write_to_page(36,i,'-f',5,-1,seite); Inc(i);
  203.   write_to_page(0,i,' ICONPATH='+iconpath,6,-1,seite);
  204.   write_to_page(36,i,'-i',5,-1,seite); Inc(i);
  205.   write_to_page(0,i,'externer Editoraufruf:',7,5,seite); Inc(i);
  206.   write_to_page(0,i,'     EDITOR='+editor,6,-1,seite);
  207.   write_to_page(36,i,'-e',5,-1,seite); Inc(i);
  208.   write_to_page(0,i,' CONFIGPATH='+configpath,6,-1,seite);
  209.   write_to_page(36,i,'-c',5,-1,seite); Inc(i);
  210. END;
  211.  
  212. PROCEDURE create_help;
  213. { Hilfstext erzeugen oder, falls bereits vorhanden, nur die entsprechenden  }
  214. { Seiten anspringen. }
  215. VAR i,j: Integer;
  216.     pg1,pg2: p_onepage;
  217. BEGIN
  218.   pg1 := hunt_in_list($999,1,True);
  219.   pg2 := hunt_in_list($999,2,True);
  220.   IF (pg1=Nil) OR (pg2=Nil) THEN BEGIN
  221.     IF pg1=Nil THEN BEGIN
  222.       New(pg1); pg1^.pg := $999; pg1^.sp := 1; init_page(pg1);
  223.       ins_to_list(pg1); update_list(pg2,1);
  224.       i := 1;
  225.       write_to_page(0,i,#13'VideoText - Kurzanleitung'#12'     1/2',3,1,pg1); Inc(i);
  226.       Inc(i);
  227.       write_to_page(0,i,' Einfach Seitennummern eintippen: z. B.',7,-1,pg1); Inc(i);
  228.       write_to_page(0,i,' 100 100/1 100/* , <Return>. Korrektur',7,-1,pg1); Inc(i);
  229.       write_to_page(0,i,' mit <Backspace> möglich. Seitenüber-',7,-1,pg1); Inc(i);
  230.       write_to_page(0,i,' wachung bzw. -protokoll: 100/. 100/!',7,-1,pg1); Inc(i);
  231.       char_to_page(1,i-3,#3,pg1); char_to_page(17,i-3,#7,pg1);
  232.       char_to_page(26,i-1,#3,pg1);
  233.       write_to_page(0,i,'Durchblättern der Listen:',4,6,pg1); Inc(i);
  234.       write_to_page(0,i,' Tab    Seitenliste/Jobliste auswählen',7,-1,pg1); Inc(i);
  235.       write_to_page(0,i,' Crsr   Auswahlzeiger > bewegen',7,-1,pg1); Inc(i);
  236.       char_to_page(22,i-1,#7,pg1); char_to_page(24,i-1,#6,pg1);
  237.       FOR j := i-2 TO i-1 DO char_to_page(8,j,#6,pg1);
  238.       write_to_page(0,i,'Operationen mit Seiten/Jobs:',4,6,pg1); Inc(i);
  239.       write_to_page(0,i,' Del    eine Seite/einen Job löschen',7,-1,pg1); Inc(i);
  240.       write_to_page(0,i,' ?      Geheimschrift aufdecken',7,-1,pg1); Inc(i);
  241.       write_to_page(0,i,' Space  und wieder tarnen',7,-1,pg1); Inc(i);
  242.       write_to_page(0,i,' s/S/^S Seite(n) speichern',7,-1,pg1); Inc(i);
  243.       write_to_page(0,i,' l      und (VT-Format) wieder laden',7,-1,pg1); Inc(i);
  244.       write_to_page(0,i,' i      IFF-Bild speichern',7,-1,pg1); Inc(i);
  245.       write_to_page(0,i,' P      Seite drucken (nur Text)',7,-1,pg1); Inc(i);
  246.       FOR j := i-7 TO i-1 DO char_to_page(8,j,#6,pg1);
  247.       write_to_page(0,i,'Verschiedenes:',4,6,pg1); Inc(i);
  248.       write_to_page(0,i,' n      Sendernamen anzeigen',7,-1,pg1); Inc(i);
  249.       write_to_page(0,i,' N      Dateinamen ändern',7,-1,pg1); Inc(i);
  250.       write_to_page(0,i,' t      Test/Uhr ein/aus',7,-1,pg1); Inc(i);
  251.       write_to_page(0,i,' T      Systemuhr nach VT-Zeit stellen',7,-1,pg1); Inc(i);
  252.       write_to_page(0,i,' x      Programmende',7,-1,pg1); Inc(i);
  253.       FOR j := i-5 TO i-1 DO char_to_page(8,j,#6,pg1);
  254.     END;
  255.     IF pg2=Nil THEN BEGIN
  256.       New(pg2); pg2^.pg := $999; pg2^.sp := 2; init_page(pg2);
  257.       ins_to_list(pg2); update_list(pg2,1);
  258.       i := 1;
  259.       write_to_page(0,i,#13'VideoText - Kurzanleitung'#12'     2/2',3,1,pg2); Inc(i);
  260.       Inc(i);
  261.       write_to_page(0,i,' F-Tasten, die nichts bewirken, wurden',7,-1,pg2); Inc(i);
  262.       write_to_page(0,i,' evtl. von einem Commodity abgefangen?',7,-1,pg2); Inc(i);
  263.       write_to_page(0,i,'Hardwaresteuerung:',4,6,pg2); Inc(i);
  264.       write_to_page(0,i,' f1/F1  Fernsehdarstellung aus/ein',7,-1,pg2); Inc(i);
  265.       write_to_page(0,i,' f2  Decoder neu initialisieren',7,-1,pg2); Inc(i);
  266.       char_to_page(8,i-2,#6,pg2);
  267.       FOR j := i-1 TO i-1 DO char_to_page(5,j,#6,pg2);
  268.       write_to_page(0,i,'Dateioptionen:',4,6,pg2); Inc(i);
  269.       write_to_page(0,i,' f4  Dateiformat ASCII/VT',7,-1,pg2); Inc(i);
  270.       write_to_page(0,i,' f5  anhängen/überschreiben',7,-1,pg2); Inc(i);
  271.       write_to_page(0,i,' F5  Icon erzeugen?',7,-1,pg2); Inc(i);
  272.       FOR j := i-3 TO i-1 DO char_to_page(5,j,#6,pg2);
  273.       write_to_page(0,i,'TOP-Text:',4,6,pg2); Inc(i);
  274.       write_to_page(0,i,' f6  Blockseiten anfordern',7,-1,pg2); Inc(i);
  275.       write_to_page(0,i,' F6  interaktive Auswahl',7,-1,pg2); Inc(i);
  276.       FOR j := i-2 TO i-1 DO char_to_page(5,j,#6,pg2);
  277.       write_to_page(0,i,'Nützliches:',4,6,pg2); Inc(i);
  278.       write_to_page(0,i,' f7  alle Jobs löschen',7,-1,pg2); Inc(i);
  279.       write_to_page(0,i,' F7  alle Seiten löschen',7,-1,pg2); Inc(i);
  280.       write_to_page(0,i,' f8  Vorrang für neu eingegebene Jobs?',7,-1,pg2); Inc(i);
  281.       write_to_page(0,i,' f9/F9  1./2. Seitenauswahl editieren',7,-1,pg2); Inc(i);
  282.       write_to_page(0,i,' f10/F10  1./2. Seitenauswahl einlesen',7,-1,pg2); Inc(i);
  283.       write_to_page(0,i,' #   Seitennummern ins Clipboard',7,-1,pg2); Inc(i);
  284.       FOR j := i-6 TO i-4 DO char_to_page(5,j,#6,pg2);
  285.       char_to_page(8,i-3,#6,pg2);
  286.       char_to_page(10,i-2,#6,pg2);
  287.       char_to_page(5,i-1,#6,pg2);
  288.     END;
  289.   END;
  290.   mark_queue(False); jobcursor := False;
  291.   mark_list(False); thispage := pg1; mark_list(True);
  292.   writepage(thispage,True);
  293. END;
  294.  
  295. BEGIN { Initialisierungsteil }
  296. END.
  297.